package dominio;

import java.util.ArrayList;


public class Viaje 
{
	private ArrayList<Asiento> escalas;
	private ArrayList<Vuelo> vuelos;
	private int numeroMaximoDeEscalas;
	private long tiempoDeVueloEnMinutos;
	private String precio;
	private double popularidad;
	private static Historial historial = Historial.getInstance();
	
	
	public void setPrecio (String precio){
		this.precio = precio;
	}
	public String getPrecio(){
		return precio;
	}
	public ArrayList<Asiento> getEscalas() {
		return escalas;
	}
	public void setEscalas(ArrayList<Asiento> escalas) {
		this.escalas = escalas;
	}
	
	public ArrayList<Vuelo> getVuelos() {
		return vuelos;
	}
	public void setVuelos(ArrayList<Vuelo> vuelo) {
		this.vuelos = vuelo;
	}
	
	public int getNumeroMaximoDeEscalas() {
		return numeroMaximoDeEscalas;
	}
	public void setNumeroMaximoDeEscalas(int numeroMaximoDeEscalas) {
		this.numeroMaximoDeEscalas = numeroMaximoDeEscalas;
	}
	public Viaje()
	{
		super();
		this.setNumeroMaximoDeEscalas(2);
		this.setEscalas(new ArrayList<Asiento>());
		this.setPopularidad(0);
	}
	public void agregarAsiento(Asiento asiento) //Solo para que sea m�s expresivo
	{
		this.getEscalas().add(asiento);
		this.setPrecio(asiento.getPrecio());
		
	}
	public void setTiempoDeVueloEnMinutos(Asiento primerAsiento , Asiento ultimoAsiento) 
	{
		long tiempoSalidaPrimerAsiento = primerAsiento.getTiempoEnMinutos(primerAsiento.getFechaDeSalida(),
																		  primerAsiento.getHoraDeSalida());
		long tiempoLlegadaUltimoAsiento = primerAsiento.getTiempoEnMinutos(ultimoAsiento.getFechaDeLlegada(),
				  														   ultimoAsiento.getHoraDeLlegada());
		this.tiempoDeVueloEnMinutos = (tiempoLlegadaUltimoAsiento - tiempoSalidaPrimerAsiento);
	}
	public long getTiempoDeVueloEnMinutos() {
		return this.tiempoDeVueloEnMinutos;
	}
	
	public void setPopularidad(double popularidad) {
		this.popularidad = popularidad;
	}
	
	public double getPopularidad() {
		return popularidad;
	}
	
	public double decimeTuPopularidad(){
		int i;
		int j;
				
		for(i = 0; i < escalas.size();i++) {
			
			String codVuelo = escalas.get(i).getCodigoDeVuelo();
			ArrayList<Vuelo> vuelos = historial.getHistorial();
			
			for(j = 0; j < vuelos.size();j++){
			
			
				if (vuelos.get(j).getCodigoDeVuelo().equals(codVuelo) && (this.getPopularidad() != 0)){
				this.setPopularidad((this.getPopularidad() + vuelos.get(j).getCantidadDeAsientosComprados())/(i + 1));
				} else {
					this.setPopularidad(vuelos.get(j).getCantidadDeAsientosComprados());
				}
			}
		}
			
		return popularidad;
	}
}
